#ifndef DATA_STORE_H_
#define DATA_STORE_H_

#include <ostream>
#include <string>
#include <vector>

#include "item.h"
#include "double_item.h"
#include "integer_item.h"
#include "string_item.h"
#include "section_item.h"

using namespace std;

class Data_store
{
public:
  Data_store();
  ~Data_store();

  Item *get_item();
  Item *get_item(string item);

  void save();
  void save(ostream &os);
  void load();
  void load(istream &is);
  void load(string name);

  void set_name(string name);

  static vector<string> tokenize(const string &str, const string &delim);

private:
  string _name;
  Item *_section_item;

  void create_item_from_tokens(Item *section_item, vector<string> &tokens);

};

#endif /* DATA_STORE_H_ */
